package br.com.velp.sudecap.service;

import br.com.velp.sudecap.entidade.DireitoSistema;
import br.com.velp.sudecap.entidade.DireitoUsuario;
import br.com.velp.sudecap.entidade.GrupoUsuario;
import br.com.velp.sudecap.entidade.Usuario;
import java.io.Serializable;
import java.util.List;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 06.11.2012 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <requisitos_afetados> RF010.03 – Gerenciar Permissão de Usuários / RF010.04 - Gerenciar de Grupo de Usuários </requisitos_afetados>
 * <descricao> Interface Responsável Por Operações Interentes 
 *             ao Contexto de Direitos do Usuário</descricao>
 * </sumario>
 */
public interface DireitoUsuarioService extends Serializable{
    
    public Long salvarDireitoUsuario(DireitoUsuario direitoUsuario);
    
    public void atualizarDireitoUsuario(DireitoUsuario direitoUsuario);
    
    public void excluirDireitoUsuario(DireitoUsuario direitoUsuario);
    
    public DireitoUsuario obterDireitoUsuarioPorId(Long idDireitoUsuario);
    
    public List<DireitoUsuario> recuperarDireitosUsuario(Usuario usuario, String sistema);
    
    public List<GrupoUsuario> recuperarTodosGrupos();
    
    public List<DireitoSistema> recuperarTodosDireitosSistema();
    
    public List<Usuario> recuperarTodosUsuarios();
    
    public void salvarAtualizarDireitosUsuario(
	    List<DireitoSistema> direitosSistema, 
	    List<DireitoSistema> direitosSistemaSelecionados, 
	    List<GrupoUsuario> gruposUsuario,
	    List<GrupoUsuario> gruposUsuarioSelecionados,
	    Usuario usuario);
    
    public List<Usuario> recuperarUsuariosPorLogin(String login);
    
    public List<DireitoSistema> recuperarDireitosPorSistema(String sistema);
    
    public List<GrupoUsuario> recuperarGruposPorSistema(String sistema);
    
}
